import java.util.*;

public class Test {

	
	private static void vul(List lijst){
		lijst.add("fiets");
		lijst.add(null);
		lijst.add("even");
		lijst.add("dak");
		lijst.add("citroen");
		lijst.add("citroen");
		lijst.add("boom");
		lijst.add("aap");
		
	}
	
	private static void toon(List lijst){
		System.out.println("*** Met een for-statement!! ***");
		for(int i=0; i<lijst.size();i++){
			String woord = (String) lijst.get(i);
			System.out.println(woord);
		}
		
		System.out.println("*** Met een for each-statement!! ***");
		for(Object obj : lijst){
			String woord = (String) obj;
			System.out.println(woord);
		}
		
		System.out.println("*** Met een iterator!! ***");
		for(Iterator i=lijst.iterator(); i.hasNext();){
			String woord = (String)i.next();
			System.out.println(woord);
		}
	}
	
	private static void toonVanafIndex(List l, int startPos){
		ListIterator li;
		
		for(li=l.listIterator(startPos);li.hasNext();){
			System.out.println(li.next());
			
		}
	}
	private static void toonVanafIndexOmgekeerd(List l, int startPos){
		ListIterator li;
		
		for(li=l.listIterator(startPos);li.hasPrevious();){
			System.out.println(li.previous());
			
		}
	}
	
	public static void main(String[] args) {
		System.out.println("List op basis van LINKEDLIST");
		
		List ll = new LinkedList();
		vul(ll);
		toon(ll);
		
		System.out.println("Nieuwe elementen!");
		ll.add(3, "Test");
		ll.add("beer");
		toon(ll);
		
		//tweede String "citroen" vervangen door "tweede citroen"
		System.out.println("Element vervangen");
		try{
			ListIterator li= ll.listIterator(6);
			li.next();
			li.set("tweede citroen");
			li.add("kers");
		}
		catch (IndexOutOfBoundsException e){
			System.out.println("element niet gevonden (index out of bound):"+ e.getMessage());
		}
		catch (NoSuchElementException e){
			System.out.println("geen element beschikbaar:"+ e.getMessage());
		}
		
		System.out.println("LinkedList afgedrukt vanaf element 2");
		toonVanafIndex(ll,2);
		System.out.println("LinkedList omgekeerd afgedrukt!");
		toonVanafIndexOmgekeerd(ll,ll.size());
	}
		
		

	

}
